/**
 * @Auther: MFM
 * @Date: 2022/3/15 - 03 - 15 - 13:34
 * @version: 1.0
 */

public class LinkedQueueDemo<E> implements Queue<E>{
    /*
     * 队列
     * 只能从一端进从另一端出
     * 先进先出
     *
     * 方法；入队 void enqueue(E)
     *       出队  E dequeue()
     *       查看队首元素  E getFront()
     *       查看对内元素数量 int getSize()
     *       判断对内元素是否为空  boolean isEmpty()
     *
     * 扩充：如果对空队进行出队 称为 队列下溢
     *       如果size>capacity 称为 队列下溢
     * */

    //底层链表
    private LinkedDemo<E> linked;

    //入队
    @Override
    public void enqueue(E e) throws Exception {
        if (linked.getSize()>10){
            return;
        }
        linked.addLast(e);
    }

    //出队
    @Override
    public E dequeue() throws Exception {
        if (linked.getSize()==0){
            return null;
        }
        return linked.delete(0);
    }

    //查看队首元素
    @Override
    public E getFront() throws Exception {
        return linked.find(0);
    }

    //查看对内元素数量
    @Override
    public int getSize() throws Exception {
        return linked.getSize();
    }

    //判断对内是否为空
    @Override
    public boolean isEmpty() throws Exception {
        return linked.getSize()==0;
    }
}
